package com.cqs.leetcode.array;

/**
 * lixw
 * 2021/11/2
 **/
public class MinimumSizeSubarraySum209 {

    /**
     * 思想： 滑动窗口
     * @param target
     * @param nums
     * @return
     */
    public int minSubArrayLen(int target, int[] nums) {
        int min = Integer.MAX_VALUE;
        for (int i = 0; i < nums.length; i++) {
            int sum = 0;
            for (int j = i; j < nums.length; j++) {
                sum += nums[j];
                if (sum >= target) {
                    //尝试移动左边指针， 缩小数组的和
                    while (i < j && sum - nums[i] >= target) {
                        sum -= nums[i++];
                    }
                    if (j - i + 1 < min) {
                        min = j - i + 1;
                    }
                    //最小的结果，减枝
                    if (min == 1) {
                        return min;
                    }
                    break;
                }
            }
        }
        return min > nums.length ? 0 : min;
    }
}
